/**
 * 验证属性使用说明
 * 非空验证例子: isNull="公司名称"
 * 验证整数: isInt="公司名称"
 * 验证数字(支持小数): isNum="公司名称"
 * 默认数字全部是只允许大于0的数字
 * 如果大于等于0的加个属性 numType="0"
 * 如果可以为负数的numType="-1"
 * 默认自动补0，若不需要补0加个参数notFill="1"
 *
 * 加减乘除方法使用说明
 * 示例如下
 * var A=10.8;
 *	var B=5.999;
 *	加法
 *	C=A.add(B);
 *	减法
 *	C=A.sub(B);
 * 乘法
 * C=A.mul(B);
 * 除法
 * C=A.div(B);
 * 数字之间直接进行运算
 * new Number(1).mul(2.9)
 * 复杂运算
 * E=A.sub(B).mul(D).div(C)
 * 数字之间复杂运算
 * new Number(1).mul(2.9).div(5)
 */
function trim(str){ // 删除左右两端的空格
    return str.replace(/(^\s*)|(\s*$)/g, "");
}
function input(str){// 只能输入汉字 字母 数字 下划线
    return str.match(/^[\u4E00-\u9FA5a-zA-Z0-9_-]{0,100}$/);
}
function inputNum(num){// 只能输入数字
    return num.match(/^[0-9]*$/);
}
function inputPercent(str){// 只能输入百分比
    var result = null;
    var index=str.indexOf("%");
    if(index!=-1 && index==str.length-1){
        return inputDouble(str.substring(0,index));
    }
    return result;
}
function inputInt(num){
    if(num==""){
        return 0;
    }else{
        if(!(/^-?[0-9]\d*$/.test(num))){
            return null;
        }else{
            if(num>999999999999)return null;
            else return 0;
        }
    }
}
function inputDouble(num){
    if(num==""){
        return 0;
    }else{
        if(!(/^-?\d+\.\d+$/.test(num)) && !(/^-?\d+$/.test(num))){
            return null;
        }else{
            if(num>999999999999)return null;
            else return 0;
        }
    }
}

function checkMobile(objForm){
    var failed = false;
//	$("input[isMobile]",$(objForm)).each(function (j) {
//		if((/^(13[\d]{9}|15[\d]{9}|18[\d]{9})$/.test($(this).val()))){
//		}else{
//			if(typeof($(this).attr("onfocus"))=="undefined")
//				addError($(this),$(this).attr("isMobile")+"必须为手机号码格式.");
//			else
//				addError($(this),$(this).attr("isMobile")+"必须为手机号码格式.",1);
//			failed = true;
//			return false;
//		}
//	});
    return !failed;
}
function isMobile(obj){
    if((/^(13[\d]{9}|15[\d]{9}|18[\d]{9})$/.test($(obj).val()))){
        return true;
    }else{
        return false;
    }
}
/*
 * 方法:判断表单中所有的 text,password,textarea控件输入内容是否合法(非法字符跳出提示并锁定该控件) 参数:form控件 返回值:
 * true:验证成功,false:验证失败
 */
function checkForm(objForm,notFill) {
    $("#btnSave").attr("disabled","disabled");
    var failed = false;
    $("input[isNull],select[isNull],textarea[isNull]",$(objForm)).each(function (j) {
        if($(this).val()==null || $(this).val()==""){
            failed=true;
            if(typeof($(this).attr("onfocus"))=="undefined")
                addError($(this),$(this).attr("isNull")+"不能为空.");
            else
                addError($(this),$(this).attr("isNull")+"不能为空.",1);
            return false;
        }
    });
    if(failed)
        return false;
    $("input[isNum]",$(objForm)).each(function (j) {
        var num = $(this).attr("isNum");
        var type = typeof($(this).attr("numType")) == "undefined" ? "1" : $(this).attr("numType");
        var value = $(this).val();
        if(value==""){
        }else{
            var maxNum = $(this).attr("maxNum");
            maxNum = typeof(maxNum)=="undefined" ? 999999999999 : parseFloat(maxNum);
            var vali = inputDouble(value)==null || parseFloat(value)>maxNum;
            if(type=="1"){
                if(vali || parseFloat(value)<=0){
                    failed=true;
                    addError($(this),num+"只允许输入大于0且小于"+maxNum+"的数字.");
                    return false;
                }
            }else{
                if(type=="0"){
                    if(vali || parseFloat(value)<0){
                        failed=true;
                        addError($(this),num+"只允许输入大于等于0且小于"+maxNum+"的数字.");
                        return false;
                    }
                }else if(type=="-1"){
                    if(vali){
                        failed=true;
                        addError($(this),num+"只允许输入小于"+maxNum+"数字.");
                        return false;
                    }
                }
            }
            if(value.indexOf(".")!=-1){
                var a = value.split(".");
                var v = a[1];
                var _i = typeof($(this).attr("n_t"))=="undefined" ? number_max_length : other_max_length;
                if(v.length>_i){
                    failed=true;
                    addError($(this),num+"小数点最多允许输入"+_i+"位.");
                    return false;
                }
            }
        }
    });
    if(failed)
        return false;
    $("input[isInt]",$(objForm)).each(function (j) {
        var num = $(this).attr("isInt");
        var type = typeof($(this).attr("numType")) == "undefined" ? "1" : $(this).attr("numType");
        var value = $(this).val();
        if(value==""){
        }else{
            var maxNum = $(this).attr("maxNum");
            maxNum = typeof(maxNum)=="undefined" ? 999999999999 : parseInt(maxNum);
            var vali = inputInt(value)==null || parseInt(value)>maxNum;
            if(type=="1"){
                if(vali || parseInt(value)<=0){
                    failed=true;
                    addError($(this),num+"只允许输入大于0且小于"+maxNum+"的整数.");
                    return false;
                }
            }else{
                if(type=="0"){
                    if(vali || parseInt(value)<0){
                        failed=true;
                        addError($(this),num+"只允许输入大于等于0且小于"+maxNum+"的整数.");
                        return false;
                    }
                }else if(type=="-1"){
                    if(vali){
                        failed=true;
                        addError($(this),num+"只允许输入小于"+maxNum+"整数.");
                        return false;
                    }
                }
            }
        }
    });
    if(failed)
        return false;
    var elements = $(objForm).find(":text[name]");
    var length=elements.length;
    // 循环验证所有输入标签
    for ( var i = 0; i < length; i++) {
        var objItem = elements[i];
        if(!checkText(objItem)){
            //$(objItem).val("");
            return false;
        }
    }
    if(typeof(notFill)=="undefined"){
        $("input[isNum],input[isInt]",$(objForm)).each(function (j) {
            if($(this).val()=="" && typeof($(this).attr("notFill"))=="undefined")
                $(this).val("0");
        });
    }
    return true;
}

/*
 * 方法:判断text,password,textarea控件输入内容是否合法(非法字符跳出提示并锁定该控件)
 * 参数:text,password,textarea控件 返回值: true:验证成功,false:验证失败
 */
function checkText(objText) {
    // 判断控件类型
    if (objText.type == "hidden" || objText.type == "text" || objText.type == "password") {
        if($(objText).attr("notVal"))
            return true;
        if (objText.value.indexOf("'") != -1 && objText.type != "textarea") {// 校验‘
            addError($(objText),"提交的内容中含有非法字符『 ' 』，请重新填写！");
            objText.focus();
            objText.select();
            return false;
        }
        if (objText.value.indexOf("'") != -1) {// 校验‘
            addError($(objText),"提交的内容中含有非法字符『 ' 』，请重新填写！");
            objText.focus();
            objText.select();
            return false;
        }
        if (objText.value.indexOf("select ") != -1) {// 校验 select
            addError($(objText),"提交的内容中含有非法字符『 select 』，请重新填写！");
            objText.focus();
            objText.select();
            return false;
        }
        if (objText.value.indexOf("insert ") != -1) {// 校验 insert
            addError($(objText),"提交的内容中含有非法字符『 insert 』，请重新填写！");
            objText.focus();
            objText.select();
            return false;
        }
        if (objText.value.indexOf(" or ") != -1) {// 校验 select
            addError($(objText),"提交的内容中含有非法字符『 or 』，请重新填写！");
            objText.focus();
            objText.select();
            return false;
        }
        if (objText.value.indexOf(" and ") != -1) {// 校验 insert
            addError($(objText),"提交的内容中含有非法字符『 and 』，请重新填写！");
            objText.focus();
            objText.select();
            return false;
        }
        if (objText.value.indexOf("update ") != -1) {// 校验 update
            addError($(objText),"提交的内容中含有非法字符『 update 』，请重新填写！");
            objText.focus();
            objText.select();
            return false;
        }
        if (objText.value.indexOf("delete ") != -1) {// 校验 delete
            addError($(objText),"提交的内容中含有非法字符『 delete 』，请重新填写！");
            objText.focus();
            objText.select();
            return false;
        }
        if (objText.value.indexOf("truncate ") != -1) {// 校验 truncate
            addError($(objText),"提交的内容中含有非法字符『 truncate 』，请重新填写！");
            objText.focus();
            objText.select();
            return false;
        }
        if (objText.value.indexOf("exec ") != -1) {// 校验 exec
            addError($(objText),"提交的内容中含有非法字符『 exec 』，请重新填写！");
            objText.focus();
            objText.select();
            return false;
        }
        if (objText.value.indexOf("&") != -1) {// 校验 &
            addError($(objText),"提交的内容中含有非法字符『 & 』，请重新填写！");
            objText.focus();
            objText.select();
            return false;
        }
        if (objText.value.indexOf("<") != -1) {// 校验 <
            addError($(objText),"提交的内容中含有非法字符『 < 』，请重新填写！");
            objText.focus();
            objText.select();
            return false;
        }
        if (objText.value.indexOf(">") != -1) {// 校验 >
            addError($(objText),"提交的内容中含有非法字符『 > 』，请重新填写！");
            objText.focus();
            objText.select();
            return false;
        }
        if (objText.value.indexOf("alter ") != -1) {// 校验 alter
            addError($(objText),"提交的内容中含有非法字符『 alter 』，请重新填写！");
            objText.focus();
            objText.select();
            return false;
        }
        if (objText.value.indexOf("chr") != -1) {// 校验 chr
            addError($(objText),"提交的内容中含有非法字符『 chr 』，请重新填写！");
            objText.focus();
            objText.select();
            return false;
        }
        if (objText.value.indexOf("mid") != -1) {// 校验 mid
            addError($(objText),"提交的内容中含有非法字符『 mid 』，请重新填写！");
            objText.focus();
            objText.select();
            return false;
        }
        // textarea将半角'转换成全角＇
        if(objText.type == "textarea"){
            var temp = objText.value;
            var intquotation = 0;
            while (true) {
                intquotation = temp.indexOf("'");
                if (intquotation == -1) {
                    break;
                }
                temp = temp.substring(0, intquotation) + "＇"
                    + temp.substring(intquotation + 1);
            }
            objText.value = temp;
        }
    }
    return true;
}

/**
 * 身份证15位编码规则：dddddd yymmdd xx p dddddd：地区码 yymmdd: 出生年月日 xx: 顺序类编码，无法确定 p:
 * 性别，奇数为男，偶数为女
 * <p />
 * 身份证18位编码规则：dddddd yyyymmdd xxx y dddddd：地区码 yyyymmdd: 出生年月日
 * xxx:顺序类编码，无法确定，奇数为男，偶数为女 y: 校验码，该位数值可通过前17位计算获得
 * <p />
 * 18位号码加权因子为(从右到左) Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2,1 ]
 * 验证位 Y = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ] 校验位计算公式：Y_P = mod( ∑(Ai×Wi),11 )
 * i为身份证号码从右往左数的 2...18 位; Y_P为脚丫校验码所在校验码数组位置
 *
 */

var Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 ];// 加权因子
var ValideCode = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ];// 身份证验证位值.10代表X
function IdCardValidate(idCard) {
    idCard = trim(idCard.replace(/ /g, ""));
    if (idCard.length == 15) {
        return isValidityBrithBy15IdCard(idCard);
    } else if (idCard.length == 18) {
        var a_idCard = idCard.split("");// 得到身份证数组
        if(isValidityBrithBy18IdCard(idCard)&&isTrueValidateCodeBy18IdCard(a_idCard)){
            return true;
        }else {
            return false;
        }
    } else {
        return false;
    }
}
/**
 * 判断身份证号码为18位时最后的验证位是否正确
 *
 * @param a_idCard
 *            身份证号码数组
 * @return
 */
function isTrueValidateCodeBy18IdCard(a_idCard) {
    var sum = 0; // 声明加权求和变量
    if (a_idCard[17].toLowerCase() == 'x') {
        a_idCard[17] = 10;// 将最后位为x的验证码替换为10方便后续操作
    }
    for ( var i = 0; i < 17; i++) {
        sum += Wi[i] * a_idCard[i];// 加权求和
    }
    valCodePosition = sum % 11;// 得到验证码所位置
    if (a_idCard[17] == ValideCode[valCodePosition]) {
        return true;
    } else {
        return false;
    }
}
/**
 * 通过身份证判断是男是女
 *
 * @param idCard
 *            15/18位身份证号码
 * @return 'female'-女、'male'-男
 */
function maleOrFemalByIdCard(idCard){
    idCard = trim(idCard.replace(/ /g, ""));// 对身份证号码做处理。包括字符间有空格。
    if(idCard.length==15){
        if(idCard.substring(14,15)%2==0){
            return 'female';
        }else{
            return 'male';
        }
    }else if(idCard.length ==18){
        if(idCard.substring(14,17)%2==0){
            return 'female';
        }else{
            return 'male';
        }
    }else{
        return null;
    }
}
/**
 * 验证18位数身份证号码中的生日是否是有效生日
 *
 * @param idCard
 *            18位书身份证字符串
 * @return
 */
function isValidityBrithBy18IdCard(idCard18){
    var year =  idCard18.substring(6,10);
    var month = idCard18.substring(10,12);
    var day = idCard18.substring(12,14);
    var temp_date = new Date(year,parseFloat(month)-1,parseFloat(day));
    // 这里用getFullYear()获取年份，避免千年虫问题
    if(temp_date.getFullYear()!=parseFloat(year)
        ||temp_date.getMonth()!=parseFloat(month)-1
        ||temp_date.getDate()!=parseFloat(day)){
        return false;
    }else{
        return true;
    }
}
/**
 * 验证15位数身份证号码中的生日是否是有效生日
 *
 * @param idCard15
 *            15位书身份证字符串
 * @return
 */
function isValidityBrithBy15IdCard(idCard15){
    var year =  idCard15.substring(6,8);
    var month = idCard15.substring(8,10);
    var day = idCard15.substring(10,12);
    var temp_date = new Date(year,parseFloat(month)-1,parseFloat(day));
    // 对于老身份证中的你年龄则不需考虑千年虫问题而使用getYear()方法
    if(temp_date.getYear()!=parseFloat(year)
        ||temp_date.getMonth()!=parseFloat(month)-1
        ||temp_date.getDate()!=parseFloat(day)){
        return false;
    }else{
        return true;
    }
}

// 加法函数
function accAdd(arg1, arg2) {
    var r1, r2, m;
    try {
        r1 = arg1.toString().split(".")[1].length;
    }
    catch (e) {
        r1 = 0;
    }
    try {
        r2 = arg2.toString().split(".")[1].length;
    }
    catch (e) {
        r2 = 0;
    }
    m = Math.pow(10, Math.max(r1, r2));
    return (arg1 * m + arg2 * m) / m;
}
// 给Number类型增加一个add方法，，使用时直接用 .add 即可完成计算。
Number.prototype.add = function (arg) {
    return parseFloat(accAdd(arg, this));
};

// 减法函数
function Subtr(arg1, arg2) {
    var r1, r2, m, n;
    try {
        r1 = arg1.toString().split(".")[1].length;
    }
    catch (e) {
        r1 = 0;
    }
    try {
        r2 = arg2.toString().split(".")[1].length;
    }
    catch (e) {
        r2 = 0;
    }
    m = Math.pow(10, Math.max(r1, r2));
    // last modify by deeka
    // 动态控制精度长度
    n = (r1 >= r2) ? r1 : r2;
    return ((arg1 * m - arg2 * m) / m).toFixed(n);
}

// 给Number类型增加一个add方法，，使用时直接用 .sub 即可完成计算。
Number.prototype.sub = function (arg) {
    if(arg>this){
        return parseFloat('-'+Subtr(arg, this));
    }
    return parseFloat(Subtr(this, arg));
};

// 乘法函数
function accMul(arg1, arg2) {
    var m = 0, s1 = arg1.toString(), s2 = arg2.toString();
    try {
        m += s1.split(".")[1].length;
    }
    catch (e) {
    }
    try {
        m += s2.split(".")[1].length;
    }
    catch (e) {
    }
    return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m);
}
// 给Number类型增加一个mul方法，使用时直接用 .mul 即可完成计算。
Number.prototype.mul = function (arg) {
    return parseFloat(accMul(arg, this));
};

// 除法函数
function accDiv(arg1, arg2) {
    var t1 = 0, t2 = 0, r1, r2;
    try {
        t1 = arg1.toString().split(".")[1].length;
    }
    catch (e) {
    }
    try {
        t2 = arg2.toString().split(".")[1].length;
    }
    catch (e) {
    }
    with (Math) {
        r1 = Number(arg1.toString().replace(".", ""));
        r2 = Number(arg2.toString().replace(".", ""));
        return (r1 / r2) * pow(10, t2 - t1);
    }
}
// 给Number类型增加一个div方法，，使用时直接用 .div 即可完成计算。
Number.prototype.div = function (arg) {
    return parseFloat(accDiv(this, arg));
};

Date.prototype.format = function(format){
    var o = {
        "M+" : this.getMonth()+1, // month
        "d+" : this.getDate(), // day
        "h+" : this.getHours(), // hour
        "m+" : this.getMinutes(), // minute
        "s+" : this.getSeconds(), // second
        "q+" : Math.floor((this.getMonth()+3)/3), // quarter
        "S" : this.getMilliseconds() // millisecond
    };
    if(/(y+)/.test(format)) {
        format = format.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
    }

    for(var k in o) {
        if(new RegExp("("+ k +")").test(format)) {
            format = format.replace(RegExp.$1, RegExp.$1.length==1 ? o[k] : ("00"+ o[k]).substr((""+ o[k]).length));
        }
    }
    return format;
};
function readCookie(name){
    var cookieValue = "";
    var search = name + "=";
    if(document.cookie.length > 0)  {
        offset = document.cookie.indexOf(search);
        if (offset != -1)    {
            offset += search.length;
            end = document.cookie.indexOf(";", offset);
            if (end == -1) end = document.cookie.length;
            cookieValue = unescape(document.cookie.substring(offset, end))
        }
    }
    return cookieValue;
}
function writeCookie(name, value, hours){
    var expire = "";
    if(hours != null)  {
        expire = new Date((new Date()).getTime() + hours * 3600000);
        expire = "; expires=" + expire.toGMTString();
    }
    document.cookie = name + "=" + escape(value) + expire;
}
//重写toFixed方法 实现四舍五入
Number.prototype.toFixed = function(s)
{
    return (parseInt(this * Math.pow( 10, s ) + 0.5)/ Math.pow( 10, s )).toString();
};
Array.prototype.exists = function (item, key) {
    var hasKey = typeof(key) != "undefined";
    for(var i=0;i<this.length;i++){
        if(hasKey){
            if(this[i][key] == item[key])
                return i;
        }else if(this[i]==item){
            return i;
        }
    }
    return -1;
};
Array.prototype.insert = function (index, item) {
    this.splice(index, 0, item);
};
Array.prototype.onepush = function (item, index, key) {
    if(this.exists(item,key)!=-1)
        return false;
    if(typeof(index)!="undefinded"){
        this.insert(index,item);
    }else{
        this.push(item);
    }
    return true;
};
Array.prototype.getKey = function (key,value) {
    for(var i=0;i<this.length;i++){
        if(this[i][key] == value)
            return this[i];
    }
    return null;
};
Array.prototype.remove = function (index) {
    this.splice(index, 1);
};

Array.prototype.removeKey = function (item,key) {
    var index = this.exists(item,key);
    if(index==-1)
        return false;
    this.splice(index, 1);
};
/**
 * 获取地址栏参数
 */
function getUrlParam(name,url)
{
    if(typeof(url)=="undefined") url = window.location.search;
    else url = url.substr(url.indexOf("?"));
    var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
    var r = url.substr(1).match(reg);
    if (r!=null) return decodeURIComponent(r[2]); return "";
}

function getValue(value){
    if(value==undefined || value==null)
        return "";
    return value;
}

function getWindowHeight(){
    var h = $(window).height();
    var b_h = $("body:first").height();
    return h>b_h ? h : b_h;
}

function getWindowWidth(){
    var w = $(window).width();
    var b_w = $("body:first").width();
    return w>b_w ? w : b_w;
}

function addError(objId,message,notFocus,notTip){
    $("#btnSave").removeAttr("disabled","disabled");
    if((typeof objId)=="string")
        objId = $("#"+objId);
    if((typeof objId)=="object"){
        if(typeof(notFocus)=="undefined"){
            var onfocus = objId.attr("onfocus");
            if(typeof(onfocus)!="undefined"){
                if(onfocus.length>12 && onfocus.substr(0,11)=="WdatePicker"){
                    if(onfocus.indexOf("{")!=-1){//}
                        var params = eval("["+onfocus.substring(onfocus.indexOf("{"),onfocus.lastIndexOf("}")+1)+"]");
                        params[0].el = objId[0];
                        WdatePicker(params[0]);
                    }else{
                        WdatePicker({el:objId[0]});
                    }
                }else
                    eval(objId.attr("onfocus"));
                j_tip(message,"error");
            }else
                objId.focus();
        }else if(typeof(notTip)=="undefined"){
            j_tip(message,"error");
        }
        if(objId.length==0 || objId.is(":hidden")){
            j_tip(message,"error");
        }else{
            layer.tips(message , objId,{tips:[1,'#F26C4F'],time:3000});
        }
    }else{
        alert("ERROR");
    }
}

function j_tip(message,showType,time){
    $("#btnSave").removeAttr("disabled","disabled");
    time = typeof(time)=='undefined'?2000:time;
    if(showType=='success'){
        layer.msg(message, {icon: 1,time: time});
    }else if(showType=='error'){
        $.messager.showicon({
            title:'系统提示',
            icon: showType,
            msg: message,
            showType: 'fade',
            timeout: time,
            style: {right:'',bottom:''}
        });
    }
}
function j_alert(message,showType){
    $.messager.alert("系统提示",message,showType,function(){
        parent.j_closeWin();
        }
    );
}
$.extend($.messager,{
    showicon: function (options) {
        var _msg = '<div style="width:100%;">';
        if (options.icon != undefined) {
            _msg += '<div class="messager-icon icon-large-' + options.icon + '"></div>';
        }
        if (options.msg != undefined) {
            _msg += '<div style="word-break : break-all;">' + options.msg + '</div>';
        }
        _msg += '</div>';
        options.msg = _msg;
        try {
            $.messager.show(options);
        } catch (e){}
    }
});
//弹出加载层
function showLoading(text) {
    var text = typeof(text)=="undefined"?"正在加载,请稍候...":text;
    var div = $("#_loading");
    if(div.length>0){
        div.html(text);
    }else{
        $("<div id='_loadingBG' class='datagrid-mask' style='z-index:99999'></div>").css({ display: "block", width: "100%", height: $(window).height() }).appendTo("body");
        $("<div id='_loading' class='datagrid-mask-msg' style='z-index:999999;font-size:12px'>"+text+"</div>").appendTo("body").css({ display: "block", left: ($(document.body).outerWidth(true) - 190) / 2, top: ($(window).height() - 45) / 2 });
    }
}
//取消加载层
function hideLoading() {$("#_loading,#_loadingBG").remove();}
function mathRand(len)
{
    var num = "";
    for(var i=0;i<len;i++)
    {
        num += Math.floor(Math.random()*10);
    }
    return num;
}

function convertCurrency(currencyDigits) {
    // Constants:
    var MAXIMUM_NUMBER = 99999999999.99;
    // Predefine the radix characters and currency symbols for output:
    var CN_ZERO = "零";
    var CN_ONE = "壹";
    var CN_TWO = "贰";
    var CN_THREE = "叁";
    var CN_FOUR = "肆";
    var CN_FIVE = "伍";
    var CN_SIX = "陆";
    var CN_SEVEN = "柒";
    var CN_EIGHT = "捌";
    var CN_NINE = "玖";
    var CN_TEN = "拾";
    var CN_HUNDRED = "佰";
    var CN_THOUSAND = "仟";
    var CN_TEN_THOUSAND = "万";
    var CN_HUNDRED_MILLION = "亿";
    var CN_SYMBOL = "人民币";
    var CN_DOLLAR = "元";
    var CN_TEN_CENT = "角";
    var CN_CENT = "分";
    var CN_INTEGER = "整";
    var CN_FU = "负";

    // Variables:
    var integral; // Represent integral part of digit number.
    var decimal; // Represent decimal part of digit number.
    var outputCharacters; // The output result.
    var parts;
    var digits, radices, bigRadices, decimals;
    var zeroCount;
    var i, p, d;
    var quotient, modulus;

    // Validate input string:

    var flag=0;
    if (Number(currencyDigits) < 0) {
        currencyDigits=Math.abs(Number(currencyDigits));
        flag=1;
    }
    if (currencyDigits == "") {
        outputCharacters="";
        return outputCharacters;
    }
    currencyDigits = currencyDigits.toString();
    if (currencyDigits.match(/[^,.\d]/) != null) {
        outputCharacters="";
        return outputCharacters;
    }
    if ((currencyDigits).match(/^((\d{1,3}(,\d{3})*(.((\d{3},)*\d{1,3}))?)|(\d+(.\d+)?))$/) == null) {
        outputCharacters="";
        return outputCharacters;
    }

    // Normalize the format of input digits:
    currencyDigits = currencyDigits.replace(/,/g, ""); // Remove comma delimiters.
    currencyDigits = currencyDigits.replace(/^0+/, ""); // Trim zeros at the beginning.
    // Assert the number is not greater than the maximum number.
    if (Number(currencyDigits) > MAXIMUM_NUMBER) {
        outputCharacters="金额数值过大!";
        return outputCharacters;
    }
    // Process the coversion from currency digits to characters:
    // Separate integral and decimal parts before processing coversion:
    parts = currencyDigits.split(".");
    if (parts.length > 1) {
        integral = parts[0];
        decimal = parts[1];
        // Cut down redundant decimal digits that are after the second.
        decimal = decimal.substr(0, 2);
    }
    else {
        integral = parts[0];
        decimal = "";
    }
    // Prepare the characters corresponding to the digits:
    digits = new Array(CN_ZERO, CN_ONE, CN_TWO, CN_THREE, CN_FOUR, CN_FIVE, CN_SIX, CN_SEVEN, CN_EIGHT, CN_NINE);
    radices = new Array("", CN_TEN, CN_HUNDRED, CN_THOUSAND);
    bigRadices = new Array("", CN_TEN_THOUSAND, CN_HUNDRED_MILLION);
    decimals = new Array(CN_TEN_CENT, CN_CENT);
    // Start processing:
    outputCharacters = "";
    // Process integral part if it is larger than 0:
    if (Number(integral) > 0) {
        zeroCount = 0;
        for (i = 0; i < integral.length; i++) {
            p = integral.length - i - 1;
            d = integral.substr(i, 1);
            quotient = p / 4;
            modulus = p % 4;
            if (d == "0") {
                zeroCount++;
            }
            else {
                if (zeroCount > 0)
                {
                    outputCharacters += digits[0];
                }
                zeroCount = 0;
                outputCharacters += digits[Number(d)] + radices[modulus];
            }
            if (modulus == 0 && zeroCount < 4) {
                outputCharacters += bigRadices[quotient];
            }
        }
        outputCharacters += CN_DOLLAR;
    }
    // Process decimal part if there is:
    if (decimal != "") {
        for (i = 0; i < decimal.length; i++) {
            d = decimal.substr(i, 1);
            if (d != "0") {
                outputCharacters += digits[Number(d)] + decimals[i];
            }
        }
    }
    // Confirm and return the final output string:
    if (outputCharacters == "") {
        outputCharacters = CN_ZERO + CN_DOLLAR;
    }
    if (decimal == "") {
        outputCharacters += CN_INTEGER;
    }
    if(flag==1){
        outputCharacters = CN_SYMBOL + CN_FU + outputCharacters;
    }else{
        outputCharacters = CN_SYMBOL + outputCharacters;
    }
    return outputCharacters;
}
var YXPRINT; //声明为全局变量
function CreatePrintFormPage(options){
    var intTop=typeof(options.intTop)=="undefined"?10:options.intTop;
    var intLeft=typeof(options.intLeft)=="undefined"?-98:options.intLeft;
    var intWidth=typeof(options.intWidth)=="undefined"?950:options.intWidth;
    var intHeight=typeof(options.intHeight)=="undefined"?1200:options.intHeight;
    YXPRINT=getYxPrint();
    YXPRINT.PRINT_INIT(options.taskName);
    YXPRINT.ADD_PRINT_HTM(intTop,intLeft,intWidth,intHeight,options.htmls);
};
function getCurrentDate(grid_search,showType) {
    var starts = grid_search.find("input[date='start']");
    var ends = grid_search.find("input[date='end']");
    if(ends.length==0){
        starts.each(function(){
            $(this).val(Format(new Date(),"yyyy-MM"));
        });
    }else {
        starts.each(function(){
            $(this).val(Format(StringToDate(getPastDate(-14)),showType));
        });
        ends.each(function(){
            $(this).val(Format(new Date(),showType));
        });
    }
};